语义化版本与npm version
版本号不仅是数字,它向用户传达了变更的兼容性信息。
语义化版本SemVer
版本格式
语义化版本格式为主版本.次版本.补丁版本(MAJOR.MINOR.PATCH):
Bash
1.2.3
│ │ │
│ │ └── 补丁版本:向下兼容的Bug修复
│ └──── 次版本:向下兼容的功能新增
└────── 主版本:不兼容的API变更
版本递增规则
| 场景 | 递增位 | 示例 |
|---|---|---|
| 修复Bug | PATCH | 1.2.3 → 1.2.4 |
| 新增功能 | MINOR | 1.2.3 → 1.3.0 |
| 破坏性变更 | MAJOR | 1.2.3 → 2.0.0 |
预发布版本
Bash
1.2.3-alpha.1
1.2.3-beta.2
1.2.3-rc.1
预发布版本优先级低于正式版本:1.2.3-alpha.1 < 1.2.3。
次版本或主版本递增时,补丁版本归零;主版本递增时,次版本和补丁版本同时归零。
npm version命令
基本用法
Bash
# 递增补丁版本 1.2.3 → 1.2.4
npm version patch
# 递增次版本 1.2.3 → 1.3.0
npm version minor
# 递增主版本 1.2.3 → 2.0.0
npm version major
设置预发布版本
text
# 创建alpha版本 1.2.3 → 1.2.4-alpha.0
npm version prerelease --preid=alpha
# 手动指定完整版本
npm version 2.0.0-beta.1
执行效果
npm version会做两件事:
- 修改package.json中的version字段
- 自动创建一个git commit和tag
text
# 不自动提交git
npm version patch --no-git-tag-version
# 仅修改版本不创建tag
npm version patch --commit-hooks=false
执行npm version前需确保工作区无未提交的改动,否则命令会报错中断。
要点总结
- SemVer格式为MAJOR.MINOR.PATCH,分别对应不兼容变更、功能新增、Bug修复
- 次版本递增补丁归零,主版本递增次版本和补丁都归零
npm version patch/minor/major自动递增并创建git commit和tag- 工作区有未提交改动时npm version会失败,需先提交或暂存